'use strict';
// 获取数据库的引用
const db = uniCloud.database()
// 聚合的操作符  字段路径的表示由一个 $ 符号加上字段名或嵌套字段名
const $ = db.command.aggregate
exports.main = async (event, context) => {
	const {
		//传入用户id
		user_id,
		name,
		page = 1,
		pageSize = 10
	} = event
	//用于判断是否为全部标签
	let matchObj = {}
	if (name !== '全部') {
		matchObj = {
			classify: name
		}
	}
	//获取数据表  .doc可以获取指定集合上指定 _id 的记录的引用
	const userinfo = await db.collection('user').doc(user_id).get()
	// 获取第零个用户收藏列表
	const article_likes_ids = userinfo.data[0].article_likes_ids

	// var name = event.name和const{name}=event是一样的写法
	// 获取数据方式二 聚合：更精细化的数据处理 求和、分组、指定字段
	const list = await db.collection('article') //获取数据表
		.aggregate() //创建聚合实例
		//追加一个字段 --用于收藏
		// .addFields({
		// 	//is_like:$.in(['数组是否要包含某个值','在那个数组里看'])
		// 	is_like:$.in(['$_id',article_likes_ids])
		// })
		.match(matchObj) //筛选条件 这个使用了matchObj可以在外面做一个判断
		.project({
			//和field有相似的功能
			content: 0
		})
		.skip(pageSize * (page - 1)) //每次跳过多少条数据
		.limit(pageSize) //每个页面返回多少条数据
		.end() //聚合结束

	//接收分类，通过分类去筛选数据
	// 获取数据方式一
	// const list = await db.collection('article')
	// .field({
	// 	// true只返回这个字段,false表示不返回
	// 	content:false
	// })//指定返回字段
	// .get()
	//返回数据给客户端
	return {
		code: 200,
		msg: "请求成功",
		data: list.data
	}
};
